home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 2001-06-27 | 3.6 KB | 149 lines |
- Hide
- 'Load Iff "dh2:dpaint/brush/lemmings.br",0
- 'Erase 1
- 'For A=0 To 15 : Colour A+16, Colour(A) : Next
- 'For A=0 To 3
- ' Get Sprite A+1,A*8,0 To A*8+8,10
- ' Hot Spot A+1,4,10
- ' Ink 0 : Bar A*8,0 To A*8+7,11
- ' Paste Bob A*8-8,0,$8001+A
- ' Get Sprite A+5,A*8,0 To A*8+8,10
- ' Hot Spot A+5,4,10
- ' Paste Bob 0,0,A+1
- 'Next
- 'Load Iff "DNA:Visual/Painting/amosgfx/gf2test5.iff",0
- 'Colour 17,$CCC : Colour 18,$68 : Colour 19,$70
- Unpack 9 To 0
- Paper 0
- WY=Screen Height
- Screen Display 0,112,40,336,256
- 'Spack 0 To 9
- Dim SH(30,5)
- LX=160*256 : LY=100*256
- SX=0 : SY=0 : GY=4 : JPOW=150
- AR=1 : FR=5
- THR=10
- SCY=0 : SCSP=0 : ANI=0
- Do
- Wait Vbl
- Add LX,SX : Add LY,SY
- Add SY,GY
- If FLOOR
- Add SX,Sgn(-SX)*Min(FR,Abs(SX))
- Else
- Add SX,Sgn(-SX)*Min(AR,Abs(SX))
- End If
- RX=LX/256 : RY=LY/256
- NP=Min(Max(LY-32768+SY*4,0),(WY-256)*256)
- D=(NP-SCY)
- Add SCSP,(D-SCSP*16)/16
- SCY=Min(Max(SCY+SCSP,0),(WY-256)*256)
- Screen Offset 0,0,SCY/256
- If DI<0
- Sprite 0,X Hard(RX),Y Hard(RY-SCY/256),5+ANI/4
- Else
- Sprite 0,X Hard(RX),Y Hard(RY-SCY/256),1+ANI/4
- End If
- P1= Extension_8_039E(RX,RY)
- If P1
- If SY>0
- SY=128-GY-SY/3 : FLOOR=1 : LY=LY and $FFFF00
- End If
- Else
- FLOOR=0
- End If
- P2= Extension_8_039E(RX,RY-10)
- If P2 and P1=0 and SY<0
- SY=-SY/2+GY
- End If
- If FLOOR=0
- If SY>0
- For A=0 To Abs(SX/32)
- P1= Extension_8_039E(RX,RY)
- P2= Extension_8_039E(RX,RY+1)
- If P1=0 and P2
- Add LY,256 : Inc RY : SY=0 : FLOOR=1
- Else
- Exit
- End If
- Next
- End If
- End If
- Do
- P1= Extension_8_039E(RX,RY-1)
- P2= Extension_8_039E(RX,RY-4)
- If P1 and P2=0
- Add LY,-256 : Dec RY
- Else
- Exit
- End If
- Loop
- If P1 and P2
- Add LX,-SX*2
- SX=-SX/2
- End If
- If FLOOR=1
- If Extension_8_039E(RX+1,RY+1)<>0 and Extension_8_039E(RX+2,RY+1)=0 : Add SX,GY*2 : End If
- If Extension_8_039E(RX-1,RY+1)<>0 and Extension_8_039E(RX-2,RY+1)=0 : Add SX,-GY*2 : End If
- If Extension_8_039E(RX+1,RY+1)=0 : Add SX,GY*4 : End If
- If Extension_8_039E(RX-1,RY+1)=0 : Add SX,-GY*4 : End If
- If Extension_8_039E(RX+1,RY+2)=0 : Add SX,GY*4 : End If
- If Extension_8_039E(RX-1,RY+2)=0 : Add SX,-GY*4 : End If
- Else
- ANI=0
- End If
- If Jup(1) and FLOOR=1 Then JSTART=1 : SY=-JPOW
- If Jup(1) and JSTART>0 and JSTART<50
- Add SY,-GY*2
- Inc JSTART
- Else
- JSTART=0
- End If
- If Jleft(1) or Jright(1)
- Add ANI,1,0 To 15
- Else
- ANI=0
- End If
- If Jleft(1) and SX>-256 Then Add SX,-THR : DI=-1
- If Jright(1) and SX<256 Then Add SX,THR : DI=1
- If Fire(1)=0 Then SHO=0
- If Fire(1) and SHO=0
- SHO=1
- For A=0 To 29
- Exit If SH(A,0)=0
- Next
- SH(A,0)=LX : SH(A,1)=LY-5*256
- SH(A,2)=DI*512 : SH(A,3)=SY-GV*8 : SH(A,4)=-5
- End If
- For A=0 To 29
- If SH(A,0)<>0
- If SH(A,4)>-5
- EX=SH(A,0)/256 : EY=SH(A,1)/256
- If SH(A,4)<5
- If SH(A,4)<0
- Ink 7+Abs(SH(A,4)) : Circle EX,EY,5-Abs(SH(A,4))
- Else
- Ink 0 : Circle EX,EY,5-Abs(SH(A,4))
- End If
- Else
- Ink 0 : Extension_8_05E6 EX,EY,5
- SH(A,0)=0
- End If
- Inc SH(A,4)
- Else
- Extension_8_0388 SH(A,0)/256,SH(A,1)/256,0
- Add SH(A,0),SH(A,2)
- Add SH(A,1),SH(A,3)
- Add SH(A,3),GY/2
- EX=SH(A,0)/256 : EY=SH(A,1)/256
- P= Extension_8_039E(EX,EY)
- If P>1 or P=-1
- ' D=Qsqr(Abs(EX-RX)*Abs(EX-RX)+Abs(EY-RY)*Abs(EY-RY))
- Inc SH(A,4)
- Else
- Extension_8_0388 EX,EY,1
- End If
- End If
- End If
- Next
- Loop